home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PACKET / MAILBOX6.ZIP / MAILBOX6.BAS < prev    next >
BASIC Source File  |  1988-08-17  |  27KB  |  1,137 lines

  1. DECLARE SUB GETLINE (A$)
  2. DECLARE SUB XGETLINE (A$)
  3. REM ********* WRITTEN FOR:  MICROSOFT QUICK BASIC
  4. REM           MAIL6.0 (first version April 1987)
  5.         CLS
  6.         KEY OFF
  7.         LOCATE , , 1, 7
  8.         DEFINT P-Z
  9.         DEFDBL F
  10.         DEFDBL T
  11.  
  12.         ON ERROR GOTO NODATFILE
  13.         OPEN "MAIL6.DAT" FOR INPUT AS #3
  14.         ON ERROR GOTO NODAT
  15.         GOSUB GETMAILDAT
  16.  
  17. NODAT:          CLOSE #3
  18.         RESUME EXITMAIL6
  19. EXITMAIL6:      ON ERROR GOTO 0
  20.         GOTO STARTHERE
  21.        
  22. NODATFILE:      RESUME YOURSTUFF
  23. YOURSTUFF:      ON ERROR GOTO 0
  24.  
  25. REM Change between here and START OF PROGRAM to suit your station
  26. REM *****************PUT YOUR CALL HERE !!!!!!!!!!!!
  27.     YOURCALL$ = "PK232"
  28. REM *****************PUT CALL TO CHECK FOR MAIL HERE
  29.     MAILCALL$ = "WB6CGW"
  30. REM *********PUT YOUR COMMUNICATIONS PARAMETERS HERE
  31.     COMX$ = "COM1:1200,E,7,1,CS60000,RB15360"
  32.     COMT$ = "COM1:1200,N,8,1,CS60000,RB15360"
  33. REM *****************PUT YOUR TNC command strings here
  34. REM RESTARTS TNC
  35.     TRESET$ = "RESTART"
  36. REM CHAR THAT PUTS TNC INTO CMD MODE
  37.     CMDMODE$ = CHR$(&H3)
  38. REM CHAR THAT DISCONNECTS
  39.     DISMODE$ = "D"
  40. REM CHAR FOR CONVERSE MODE
  41.     CONVMODE$ = "CONV"
  42. REM CHAR FOR TRANSPARENT MODE
  43.     TMODE$ = "T"
  44. REM Marks end of binary file and forces disconnect.
  45. REM Change to "/EX" if disconnect not wanted
  46.     ENDBINARY$ = "*** DISCONNECTED"
  47. REM XON & XOFF CHARS
  48.     XON$ = CHR$(&H11)
  49.     XOFF$ = CHR$(&H13)
  50. REM *****************PUT YOUR TNC INITIALIZATION STRINGS HERE
  51. REM ENTER # OF TNC SETUP STRINGS HERE
  52.     TNCN = 5
  53.     DIM TNC$(TNCN)
  54. REM autobaud char
  55.     TNC$(1) = "*"
  56.     TNC$(2) = "ECHO OFF"
  57.     TNC$(3) = "MY " + YOURCALL$
  58.     TNC$(4) = "AWLEN 8"
  59.     TNC$(5) = "PARITY 0"
  60. REM ***************** PUT BBS CALLS HERE
  61. REM ENTER # OF BBS CALL STRINGS HERE
  62.     BBSN = 2
  63.     DIM BBS$(BBSN + 1)
  64. REM BBS$(0) RESERVED
  65.     BBS$(1) = "Los Altos BBS "
  66.     BBS$(2) = "Mail"
  67. REM ***************** PUT NUMERICAL POSITION of first letter of
  68. REM call in the string which appears when your TNC connects to a station
  69. REM i.e.  When my TNC connects to a station the following message appears:
  70. REM *** CONNECTED TO XXXXX
  71. REM the first letter of the call appears in the eighteenth position
  72.  
  73.     CALLPOS = 18
  74. REM PUT # OF MESSAGES HERE
  75.     SNMSGN = 3
  76.     DIM SNMSG$(SNMSGN)
  77.     SNMSG$(1) = "Ready to receive mail!"
  78.     SNMSG$(2) = "For ASCII END text with /EX as the last line"
  79.     SNMSG$(3) = "For binary file send  /B FILENAME.EXT  now!"
  80.     SOFFMSG$ = "MAIL RECEIVED AT "
  81. REM ****************** CHANGE FUDGE FACTOR TO SUIT YOUR COMPUTER
  82. REM adjust FF until TNC resets after  of binary file
  83.     FF = 5
  84. REM TIMER USED WITH COM BUFFER RESET
  85.     T0 = 100
  86. REM SHORT TIMER used when putting TNC into command mode
  87.     T1 = 100 * FF
  88. REM MEDIUM TIMER used to enter/exit quiet mode
  89.     T2 = 500 * FF
  90. REM LONG TIMER used to enter/exit quiet mode
  91.     T3 = 5000 * FF
  92. REM FOUR MINUITE TIMER
  93.     T4 = 6000 * FF
  94. REM these appear in front of all commands from the tnc
  95.     FLAG$ = "***"
  96. REM Put your function key strings here
  97.     KEY 1, "ENTER"
  98.     KEY 2, "UP TO"
  99.     KEY 3, "15 CHARACTERS"
  100.     KEY 4, "PER KEY"
  101.     KEY 5, "FIVE"
  102.     KEY 6, "SIX"
  103.     KEY 7, "SEVEN"
  104.     KEY 8, "EIGHT"
  105.     KEY 9, "NINE"
  106.  
  107. REM ******************* START OF PROGRAM
  108. STARTHERE:
  109.     MM1$ = "Mail Mode>  Waiting for Mail for   "
  110.     MM2$ = "   hit Alt Q to return to menu"
  111.     COMX$ = COMT$
  112.     MC$ = LEFT$(MAILCALL$, 1)
  113.     MC = LEN(MAILCALL$)
  114.     MAILNX = 100
  115.     MRFLAG = 0
  116.     CLAR$ = STRING$(80, " ")
  117.     CRLF$ = CHR$(&HD) + CHR$(&HA)
  118.        
  119.     CLS
  120.     LOCATE 7, 28: PRINT "WB6CGW  MAILBOX6.BAS"
  121.     GOTO MAINMENU
  122. STARTMENU:
  123. y = 0
  124. CLS
  125. GOSUB 43211
  126. MAINMENU:
  127. LOCATE 9, 31: PRINT YOURCALL$ + " MAILBOX"
  128. LOCATE 12, 13: PRINT "----------------------  MENU  ----------------------"
  129. LOCATE 14, 14: PRINT "1.      Initialize TNC         6. Type File to disk"
  130. LOCATE 16, 14: PRINT "2.      Wait For Mail          7. View File"
  131. LOCATE 18, 14: PRINT "3.      Terminal Mode          8. Upload File "
  132. LOCATE 20, 14: PRINT "4.      Log File on            9. Display Files"
  133. LOCATE 22, 14: PRINT "5.      Log File off           0. Exit "
  134. PRINT : PRINT
  135. GOSUB 43212
  136. MAINLOOP1:      PRINT "            CHOICE ";
  137.         INPUT A$
  138.         IF A$ = "" GOTO MAINLOOP1
  139.         A = VAL(A$)
  140.         IF A = 0 GOTO 64000
  141.  
  142. ON A GOSUB SETUPTNC, ENTER1, ENTER2, CLOSEIT, CHKLFN, TYPEFILE, VIEWFILE, UPLOAD, DISPFILES
  143. GOSUB DELAY2
  144. GOTO STARTMENU
  145. REM ********** end of main menu
  146.  
  147. ENTER1: CLS : GOSUB CHKLFN
  148.     GOSUB WAITMAIL
  149.     MFLAG = 1: TX = T4 * .9
  150.     GOTO ENTER3
  151. ENTER2: GOSUB MENU2: GOSUB 43250
  152.     TX = 0: MFLAG = 0: GOSUB 43212
  153. ENTER3: A$ = "": B$ = "": VV$ = ""
  154.     OPEN COMX$ FOR RANDOM AS #1
  155. ENTER4: GOSUB COMMLOOP
  156.     IF LEFT$(B$, 4) = "cmd:" THEN PRINT : TX = 0: GOSUB BIGLOOP
  157.  
  158. REM The following timer causes a disconnect if a disk file is open and
  159. REM no chars are received from the TNC for about four minutes.
  160.     IF MRFLAG = 1 THEN
  161.      TX = TX + 1
  162.         IF TX > T4 THEN
  163.          GOSUB CMODE
  164.          GOSUB 31400
  165.          B$ = "*** DISCONNECTED"
  166.          GOSUB BIGLOOP
  167.          GOSUB DELAY1
  168.          CLS
  169.          GOSUB DELAY1
  170.         END IF
  171.     END IF
  172.  
  173. REM Next Line blanks screen if no communications for about 4 min
  174. TX = TX + 1: IF TX > T4 THEN TX = 0: CLS
  175.  
  176.      IF VV$ <> "" THEN
  177.       A$ = VV$
  178.       VV$ = ""
  179.       GOTO CHKCON1
  180.      END IF
  181.  
  182. CHKCON:  A$ = INKEY$
  183. CHKCON1: IF A$ = "" GOTO ENTER4
  184.      IF MRFLAG = 1 GOTO CHKCON2 ELSE IF MFLAG = 1 THEN GOSUB WAITMAIL
  185. CHKCON2: IF A$ = CHR$(&H8) THEN A$ = "": GOSUB 43210: PRINT : GOTO ENTER4
  186.      LOCATE , , 1, 7
  187.      IF LEN(A$) > 1 THEN GOTO RTCHR
  188.      IF A$ = CHR$(&HD) THEN GOTO ASTRIN1
  189.      GOTO RTCHR1
  190.  
  191. RTCHR:  A$ = RIGHT$(A$, 1)
  192.  
  193.     IF A$ = CHR$(24) THEN
  194.      GOSUB DLOPEN
  195.      GOSUB 43250
  196.      OPEN COMX$ FOR RANDOM AS #1
  197.      A$ = ""'download
  198.     END IF
  199.  
  200.     IF A$ = CHR$(38) THEN
  201.      GOSUB CLOSEIT
  202.      GOSUB 43250
  203.      OPEN COMX$ FOR RANDOM AS #1
  204.      A$ = "" 'log on
  205.     END IF
  206.  
  207.     IF A$ = CHR$(16) THEN GOTO ASTRIN3
  208.     IF A$ = CHR$(37) THEN GOSUB CHKLFN: GOSUB 43250: A$ = ""   'log off
  209.     IF A$ = CHR$(20) THEN GOSUB TYPEFILE: GOSUB 43250: A$ = "" 'type
  210.     IF A$ = CHR$(47) THEN GOSUB VIEWFILE: GOSUB 43250: A$ = "" 'view
  211.     IF A$ = CHR$(31) THEN GOSUB SETKEYS
  212.     IF A$ = CHR$(32) THEN GOSUB DODOSSHELL
  213.     IF A$ = CHR$(22) THEN
  214.      GOSUB UPLOAD
  215.      OPEN COMX$ FOR RANDOM AS #1
  216.      A$ = ""
  217.      GOSUB CVMODE     'upload
  218.      GOSUB 43205
  219.      PRINT "UPLOAD COMPLETE:  ";
  220.      GOSUB LITEON
  221.      PRINT "Converse mode - hit ^C for Com mode";
  222.      GOSUB LITEOFF
  223.      GOSUB 43212
  224.     END IF
  225.  
  226.     IF A$ = CHR$(33) THEN GOSUB DISPFILES: GOSUB 43250: A$ = ""  'files
  227.     IF A$ = CHR$(35) THEN GOSUB MENU2: PRINT : GOSUB 43250: A$ = ""
  228. RTCHR1: IF A$ = "" GOTO ENTER4
  229.        
  230.     IF ASC(A$) < 27 THEN
  231.      V = ASC(A$) + 64
  232.      PRINT "^";
  233.      PRINT CHR$(V)
  234.      GOSUB LITEON
  235.      GOSUB LITEOFF
  236.      GOSUB 43205
  237.      GOTO ASTRIN
  238.     END IF
  239.  
  240.     GOSUB 43205
  241.     GOSUB LITEON
  242.     PRINT A$;
  243.     GOSUB LITEOFF
  244.     V = 1
  245.     CLA$ = ""
  246.     CLB$ = ""
  247.     LOCATE , , 1, 7
  248. CONIN:  GOSUB COMMLOOP2
  249.     W$ = INKEY$
  250.        
  251.     CLV = LOC(1)
  252.     IF CLV <> 0 THEN GOSUB COMMLOOP2
  253.  
  254.     IF W$ = "" THEN GOTO CONIN
  255.        
  256.  
  257.     IF W$ = CHR$(&HD) THEN
  258.      GOSUB 43205
  259.      GOTO ASTRIN
  260.     END IF
  261.  
  262.     IF W$ = CHR$(&H8) THEN
  263.      V = V - 1
  264.      GOSUB 30900
  265.        IF V = 0 THEN
  266.         GOSUB 43211
  267.         GOTO CHKCON
  268.        ELSE
  269.         A$ = LEFT$(A$, V)
  270.         GOTO CONIN
  271.        END IF
  272.      END IF
  273.  
  274.     GOSUB LITEON
  275.     LOCATE 25, V + 1
  276.     PRINT W$;
  277.     GOSUB LITEOFF
  278.     A$ = A$ + W$: V = V + 1
  279.     IF V > 78 THEN GOTO ASTRIN
  280.     GOTO CONIN
  281.  
  282. ASTRIN: IF A$ = "" GOTO ASTRIN3
  283.     IF A$ = "^C" THEN A$ = CHR$(&H3)
  284.     IF ASC(A$) = 3 THEN
  285.      CLOSE #1
  286.      OPEN COMX$ FOR RANDOM AS #1
  287.      PRINT #1, A$;
  288.      GOTO ASTRIN2
  289.     END IF
  290.  
  291. ASTRIN1:
  292.         IF A$ = CHR$(&HD) THEN
  293.          PRINT #1, A$;
  294.         ELSE
  295.          PRINT #1, A$
  296.         END IF
  297.  
  298. REM ********** The following line causes everything typed on the keyboard
  299. REM to be included in the log file. This is the difference between
  300. REM the LOG and and the DOWNLOAD file which does not include local txt.
  301.      IF LOGFLAG = 1 THEN B$ = A$ + CRLF$
  302.  
  303. REM ********** The following lines cause echo on line #25 and may be removed
  304. REM            IF LOGFLAG = 1 AND LFLAG = 0 THEN GOSUB BIGLOOP
  305.            B$ = A$ + CRLF$: GOSUB BIGLOOP
  306. ASTRIN2: LOCATE 24, 1: TX = 0
  307.      COM(1) OFF
  308.      GOTO ENTER4
  309.  
  310. ASTRIN3: CLOSE #1
  311.      COM(1) OFF
  312.      CLS : GOSUB 43210
  313.      RETURN
  314.  
  315.  
  316. REM ********** BIGLOOP
  317. BIGLOOP:
  318.     IF MRFLAG = 1 GOTO BIG13
  319.     IF MFLAG = 1 GOTO BIG1
  320.     IF B$ = CHR$(&HD) + CHR$(&HD) + CHR$(&HA) THEN B$ = CHR$(&HA)
  321.         IF RIGHT$(B$, 1) = CHR$(&HA) THEN
  322.          VVV = LEN(B$) - 1
  323.          PRINT LEFT$(B$, VVV);
  324.         ELSE
  325.          PRINT B$;
  326.         END IF
  327.     TX = 0: GOTO EXITBIG
  328. BIG1:   IF LEFT$(B$, 3) = FLAG$ THEN GOTO BIG5
  329.     IF LEFT$(B$, 3) = "/O " THEN GOTO BIG5
  330.     FOR Z = 1 TO BBSN
  331.     P = LEN(BBS$(Z))
  332.     IF LEFT$(B$, P) = BBS$(Z) THEN GOTO BIG2
  333.     NEXT Z
  334.     GOTO EXITBIG
  335. BIG2:   Q = LEN(B$)
  336.     FOR ZZ = 1 TO Q
  337.     IF MID$(B$, ZZ, 1) <> MC$ GOTO BIG3
  338.     IF MID$(B$, ZZ, MC) = MAILCALL$ GOTO BIG4
  339. BIG3:   NEXT ZZ
  340.     GOTO EXITBIG
  341. BIG4:   PRINT : PRINT "!!!!! Mail is waiting on "; BBS$(Z)
  342.     PRINT B$
  343.     GOSUB SAVELOG
  344.     GOTO EXITBIG
  345. BIG5:   IF LEFT$(B$, 13) = "*** CONNECTED" THEN PRINT B$: GOTO BIG7
  346.     IF LEFT$(B$, 3) <> "/O " THEN GOTO BIG6
  347.     FOR V = 1 TO CALLPOS - 4: B$ = "X" + B$: NEXT: GOTO BIG7
  348. BIG6:   GOTO EXITBIG
  349. BIG7:   BBS$(0) = MID$(B$, CALLPOS, 10)
  350.     VV = LEN(BBS$(0))
  351.     FOR V = 1 TO VV
  352.     IF MID$(BBS$(0), V, 1) < "0" THEN MID$(BBS$(0), V, 1) = "_"
  353.     NEXT
  354.     FOR V = 1 TO VV
  355.     IF MID$(BBS$(0), V, 1) > "z" THEN MID$(BBS$(0), V, 1) = "_"
  356.     NEXT
  357.     IF LFLAG = 1 THEN GOTO BIG9
  358. BIG8:   GOSUB DELAY1
  359.        
  360.     PRINT #1, CRLF$
  361.     FOR V = 1 TO SNMSGN
  362.     PRINT #1, SNMSG$(V)
  363.     PRINT #1, CRLF$
  364.     NEXT
  365.  
  366. BIG9:   MRFLAG = 1
  367. BIG10:  MAILNX$ = STR$(MAILNX): MAILNX$ = RIGHT$(MAILNX$, 3)
  368.     MAILNX = MAILNX + 1
  369.     ON ERROR GOTO BIGERR1
  370.     IF LEN(BBS$(0)) = 0 THEN BBS$(0) = "NOHAMCALL"
  371.     IF LEN(BBS$(0)) > 2 GOTO BIG11
  372.     IF MID$(BBS$(0), 2, 1) = ":" THEN BBS$(0) = BBS$(0) + "NONAME"
  373.        
  374. BIG11:  BBS$(0) = UCASE$(BBS$(0))
  375.     BBS$(0) = LTRIM$(BBS$(0))
  376.     BBS$(0) = RTRIM$(BBS$(0))
  377.  
  378.     IF RIGHT$(BBS$(0), 2) = CRLF$ THEN
  379.      V = LEN(BBS$(0))
  380.      V = V - 2
  381.      BBS$(0) = LEFT$(BBS$(0), V)
  382.     END IF
  383.     
  384.      IF MID$(BBS$(0), 2, 1) = ":" THEN
  385.        BBS$(0) = LEFT$(BBS$(0), 10)
  386.       ELSE
  387.        BBS$(0) = LEFT$(BBS$(0), 8)
  388.      END IF
  389.  
  390.  
  391.     NAME BBS$(0) + "." + MAILNX$ AS BBS$(0) + "." + MAILNX$
  392. BIG12:  OPEN "O", #2, BBS$(0) + "." + MAILNX$
  393.     TX = 0
  394.     ON ERROR GOTO 0
  395.     GOTO EXITBIG
  396.  
  397. BIG13:  IF BFLAG = 1 THEN PRINT "d"; : GOTO BIG14
  398.     TX = 0
  399.         IF RIGHT$(B$, 1) = CHR$(&HA) THEN
  400.          VVV = LEN(B$) - 1
  401.          PRINT LEFT$(B$, VVV);
  402.         ELSE
  403.          PRINT B$;
  404.         END IF
  405.  
  406. BIG14:
  407.     IF LEFT$(B$, 4) = "cmd:" GOTO EXITBIG
  408.     B$ = UCASE$(B$)
  409.     IF LEFT$(B$, 5) = "?WHAT" GOTO BIG17
  410.     IF LEFT$(B$, 16) = "*** DISCONNECTED" GOTO BIG16
  411.     IF LEFT$(B$, 3) = "/EX" GOTO BIG17
  412.     IF LEFT$(B$, 2) = "/B" GOTO BIG15
  413.     PRINT #2, B$;
  414.     GOTO EXITBIG
  415. BIG15:  PRINT #2, B$, DATE$, TIME$: CLOSE #2
  416.     BN$ = UCASE$(MID$(B$, 4, 16))
  417.     BN$ = LTRIM$(BN$)
  418.     BN$ = RTRIM$(BN$)
  419.     IF RIGHT$(BN$, 2) = CRLF$ THEN
  420.      V = LEN(BN$)
  421.      V = V - 2
  422.      BN$ = LEFT$(BN$, V)
  423.     END IF
  424.     ON ERROR GOTO BIGERR2
  425.     NAME BN$ AS BN$
  426.     OPEN "O", #2, BN$
  427.     ON ERROR GOTO 0
  428.     PRINT #1, CRLF$
  429.     PRINT #1, BN$ + " Open - ready to receive BINARY FILE" + CRLF$
  430.     GOSUB 43200
  431.     GOSUB LITEON
  432.     PRINT BN$ + " open";
  433.     GOSUB LITEOFF
  434.     PRINT
  435.     BFLAG = 1
  436.     GOSUB CMODE: PRINT #1, TMODE$ 'FORCE TRANSPARENT MODE
  437.     GOTO EXITBIG
  438. BIG16:  IF UPFLAG = 1 THEN
  439.      GOSUB 43200
  440.      GOSUB LITEON
  441.      PRINT "Disconnected " + UN$ + " CLOSED";
  442.      GOSUB LITEOFF
  443.      PRINT
  444.      UPFLAG = 0
  445.      GOTO BIG18
  446.     END IF
  447. BIG17:  IF LFN$ <> "" THEN
  448.      GOSUB 43200
  449.      GOSUB LITEON
  450.      PRINT "FILE: " + LEFT$(LFN$, 10) + ".XXX open";
  451.      GOSUB LITEOFF
  452.      PRINT
  453.      GOTO EXITBIG
  454.     END IF
  455. BIG18:  CLOSE #2: MRFLAG = 0: TX = 0: ON ERROR GOTO 0
  456.     IF BFLAG = 1 THEN
  457.      GOSUB FCMODE
  458.      PRINT #1, CRLF$
  459.      PRINT #1, BN$ + " Received" + CRLF$
  460.      PRINT #1, "Please disconnect"
  461.      GOSUB 43200
  462.      GOSUB LITEON
  463.      PRINT BN$ + " CLOSED";
  464.      GOSUB LITEOFF
  465.      PRINT
  466.      BFLAG = 0
  467.      GOTO EXITBIG
  468.     END IF
  469.     PRINT #1, CRLF$
  470.     PRINT #1, SOFFMSG$ + YOURCALL$;
  471.     PRINT #1, " FROM ";
  472.     PRINT #1, BBS$(0) + "." + RIGHT$(MAILNX$, 3)
  473.     PRINT #1, CRLF$
  474.     PRINT #1, "Please disconnect"
  475.     GOSUB 43200
  476.     PRINT "MAIL RECEIVED FROM " + BBS$(0) + "." + RIGHT$(MAILNX$, 3)
  477. EXITBIG: B$ = "": RETURN
  478.  
  479.  
  480. REM ********** BIGLOOP ERR ROUTINES
  481.  
  482. BIGERR1:
  483.      IF ERR = 58 THEN RESUME BIG10
  484.      RESUME BIG12
  485.  
  486. BIGERR2: IF ERR = 53 THEN RESUME NEXT
  487.      IF ERR = 58 THEN
  488.       PRINT #1, CHR$(&HD) + CHR$(&HA) + "File name exists! Use new name"
  489.       RESUME BIG8
  490.      END IF
  491.      PRINT #1, CRLF$
  492.      PRINT #1, "ERROR  #", ERR, " BINARY TRANSFER ABORTED"
  493.      PRINT #1, CRLF$
  494.      BFLAG = 0
  495.      CLOSE #2: GOSUB FCMODE: RESUME BIG8
  496.  
  497.  
  498.  
  499. REM ********** ONE LINE SUBROUTINES
  500. NUMBERS:
  501. 30900 LET CX = CSRLIN
  502.       LET CY = POS(0)
  503.       IF CY = 1 THEN
  504.        RETURN
  505.       ELSE
  506.     LOCATE CX, CY - 1
  507.        PRINT " ";
  508.       END IF
  509. 31000 PRINT CHR$(29); : RETURN
  510. 31400 PRINT #1, DISMODE$: FOR V = 1 TO T1: NEXT: RETURN
  511. 43200 PRINT : LOCATE 25, 1: PRINT CLAR$: LOCATE 25, 1: RETURN
  512. 43205 LOCATE 25, 1: PRINT CLAR$: LOCATE 25, 1: RETURN
  513. 43210 PRINT : LOCATE 24, 1: PRINT CLAR$: LOCATE 24, 1: RETURN
  514. 43211 LOCATE 25, 1: PRINT CLAR$: RETURN
  515. 43212 LOCATE 24, 1: PRINT CLAR$; : LOCATE 24, 1: RETURN
  516. 43250 GOSUB LITEON: PRINT "Com Mode>"; : GOSUB LITEOFF: PRINT : RETURN
  517. 44000 FOR VVV1 = 1 TO VVV: PRINT " "; : NEXT: RETURN
  518. 64000 GOSUB 43200: LOCATE 24, 1: ON ERROR GOTO 0: CLOSE : END
  519.  
  520. REM ********** SUBROUTINES START HERE **************************************
  521.  
  522. REM ********** Converse mode
  523. CVMODE: PRINT #1, CONVMODE$: FOR V = 1 TO T1: NEXT: RETURN
  524.  
  525.  
  526. REM ********** CMODE - send one ^C to enter command mode
  527. CMODE: PRINT #1, CMDMODE$: RETURN
  528.  
  529. REM ********** DELAY
  530. DELAY1: FOR V = 1 TO T3: NEXT: RETURN
  531. DELAY2: FOR V = 1 TO T2: NEXT: RETURN
  532.  
  533. REM ********** Down load open
  534. DLOPEN:
  535.  CLOSE #1: OPEN COMX$ FOR RANDOM AS #1: GOSUB CHKLFN: MFLAG = 1
  536.  GOSUB 43200
  537.  GOSUB LITEON
  538.  PRINT "Enter file name OR Q to quit and retrun to com mode:";
  539.  GOSUB LITEOFF
  540.  INPUT " "; LFN$
  541.  IF LFN$ = "q" THEN LFN$ = "Q"
  542.  IF LFN$ = "Q" THEN LFN$ = "": GOSUB CHKLFN: GOSUB 43200: PRINT : GOTO EXITDLO
  543.  IF LFN$ = "" THEN LFN$ = "DOWNLOAD"
  544.  B$ = "/O " + LFN$: LFLAG = 1
  545.  GOSUB BIGLOOP
  546.  GOSUB 43200
  547.  PRINT "Download file  " + BBS$(0) + "." + MAILNX$ + "  open"
  548. EXITDLO: CLOSE #1: RETURN
  549.  
  550.  
  551. REM ********** DOS SHELL
  552. DODOSSHELL:     CLS
  553.         LOCATE 16, 13
  554.         GOSUB LITEON
  555.         PRINT "Type exit to return from DOS"
  556.         GOSUB LITEOFF
  557.         SHELL
  558.         CLS
  559.         GOSUB 43212
  560.            
  561.         IF MFLAG = 1 THEN
  562.          GOSUB 43200: PRINT MM1$ + MAILCALL$ + MM2$
  563.         ELSE
  564.         GOSUB 43250
  565.         END IF
  566.  
  567.         A$ = ""
  568.         RETURN
  569.  
  570.  
  571. REM ********** Force command mode
  572. FCMODE:
  573.     FOR V = 1 TO T4: NEXT
  574.     FOR V = 1 TO T4: NEXT
  575.     FOR VV = 1 TO 3: PRINT #1, CMDMODE$;
  576.       FOR V = 1 TO T1: NEXT V:
  577.       NEXT VV
  578.     FOR V = 1 TO T4: NEXT
  579.     RETURN
  580.  
  581.  
  582.  
  583. LITEON:       COLOR 0, 7: RETURN
  584. LITEOFF:      COLOR 7, 0: RETURN
  585.  
  586.  
  587. REM ********** SETUPTNC
  588. SETUPTNC:
  589.      CLS : LOCATE 1, 25: PRINT "ATTEMPTING TO INITIALIZE TNC"
  590.      OPEN COMX$ FOR RANDOM AS #1
  591.      X = 1: y = 1
  592. SETTNC1: PRINT #1, TNC$(X);
  593.      FOR V = 1 TO T2: NEXT
  594.      y = y + 1: IF y < 4 GOTO SETTNC1
  595.      X = X + 1
  596.      FOR V = 1 TO T2: NEXT
  597. SETTNC2: PRINT #1, TNC$(X)
  598.      X = X + 1
  599.      IF X > TNCN GOTO SETTNC3
  600.      FOR V = 1 TO T2: NEXT
  601.      GOTO SETTNC2
  602. SETTNC3: PRINT #1, TRESET$
  603.      COMX$ = COMT$
  604.      CLOSE
  605.      CLS : RETURN
  606.  
  607. CHKLFN:
  608.     IF LFN$ = "" GOTO CHKLFN1
  609.     GOSUB 43210
  610.     PRINT CLAR$
  611.     LOCATE 24, 28
  612.     GOSUB LITEON
  613.     PRINT LEFT$(LFN$, 10) + "." + MAILNX$ + " closed";
  614.     GOSUB LITEOFF
  615.     GOSUB 43200
  616.     PRINT
  617. CHKLFN1: CLOSE #2
  618.      LFN$ = "": A$ = "": LFLAG = 0: LOGFLAG = 0
  619.      MFLAG = 0: MRFLAG = 0: TX = 0
  620.      RETURN
  621.  
  622. REM ********** WAITMAIL
  623. WAITMAIL:
  624.     GOSUB 43200: PRINT MM1$ + MAILCALL$ + MM2$
  625.     PRINT : PRINT "Monitoring:": PRINT
  626.     FOR YY = 1 TO BBSN
  627.     PRINT BBS$(YY): NEXT YY
  628.     PRINT : RETURN
  629.  
  630.  
  631. REM ********** CLOSEIT
  632. CLOSEIT:
  633.     CLOSE #1
  634.     OPEN COMX$ FOR RANDOM AS #1
  635.     GOSUB CHKLFN
  636.     MFLAG = 1: LFLAG = 1: LOGFLAG = 1
  637.     GOSUB 43200
  638.     INPUT "Enter log File Name OR Q to return to com mode: "; LFN$
  639.     IF LFN$ = "q" THEN LFN$ = "Q"
  640.  
  641.     IF LFN$ = "Q" THEN
  642.      LFN$ = ""
  643.      GOSUB CHKLFN
  644.      GOSUB 43210
  645.      PRINT
  646.      GOTO CLOSEIT1
  647.     END IF
  648.        
  649.     IF LFN$ = "" THEN LFN$ = "PACKETLG"
  650.     B$ = "/O " + LFN$
  651.     GOSUB BIGLOOP
  652.     GOSUB 43200: PRINT LEFT$(LFN$, 10) + "." + MAILNX$ + " open"
  653. CLOSEIT1: CLOSE #1: LFLAG = 0: MFLAG = 0
  654.     RETURN
  655.  
  656.  
  657. REM ********** TYPEFILE
  658. TYPEFILE:
  659.     GOSUB CHKLFN
  660.     PRINT : PRINT
  661.     GOSUB 43210
  662.     PRINT "ENTER name of file to TYPE to disk"
  663.     GOSUB 43200
  664.     PRINT
  665.     INPUT V$
  666.     IF V$ = "" GOTO TFILE1
  667.     ON ERROR GOTO TFILE2
  668.     NAME V$ AS V$
  669.     OPEN "O", #2, V$
  670.     PRINT : PRINT V$ + " OPEN, end with  /EX  on a line by itself": PRINT
  671. TFILE5: V = 1: A$ = ""
  672. TFILE3: W$ = INKEY$
  673.     IF W$ = "" THEN GOTO TFILE3
  674.     IF W$ = CHR$(&HD) THEN PRINT : GOTO TFILE4
  675.     IF W$ = CHR$(&H8) AND V = 1 THEN GOTO TFILE5
  676.     IF W$ = CHR$(&H8) THEN
  677.      V = V - 1
  678.      GOSUB 30900
  679.  
  680.       IF V = 0 THEN
  681.        GOTO TFILE5
  682.       ELSE
  683.        A$ = LEFT$(A$, V - 1)
  684.        GOTO TFILE3
  685.       END IF
  686.      END IF
  687.  
  688.     PRINT W$;
  689.     A$ = A$ + W$: V = V + 1
  690.     GOTO TFILE3
  691. TFILE4: PRINT #2, A$
  692.     IF LEFT$(A$, 3) = "/EX" GOTO TFILE1
  693.     IF LEFT$(A$, 3) = "/ex" GOTO TFILE1
  694.     GOTO TFILE5
  695. TFILE2: IF ERR = 5 THEN RESUME TFILE5
  696.     IF ERR = 53 THEN RESUME NEXT
  697.        
  698.     IF ERR = 58 THEN
  699.      PRINT
  700.      LOCATE 24, 30
  701.      GOSUB LITEON
  702.      PRINT V$ + " Exists, enter NEW Name";
  703.      GOSUB LITEOFF
  704.      PRINT
  705.      RESUME TYPEFILE
  706.     END IF
  707.  
  708.     PRINT : LOCATE 24, 30: PRINT ERR, ERL
  709.     A$ = "": RESUME TYPEFILE
  710. TFILE1: CLOSE #2: ON ERROR GOTO 0: GOSUB 43210: RETURN
  711.  
  712.  
  713.  
  714. REM ********** VIEWFILE
  715. VIEWFILE:
  716.     GOSUB CHKLFN
  717.     GOSUB 43210
  718.     PRINT : PRINT "ENTER name of file to VIEW"
  719.     GOSUB 43200: PRINT
  720.     INPUT V$
  721.     IF V$ = "" GOTO VF1
  722.     ON ERROR GOTO VF2
  723.     OPEN "I", #2, V$
  724.     PRINT : PRINT
  725. VF5:    IF EOF(2) THEN GOSUB VFLOOP1: GOTO VF1
  726.     VV$ = INKEY$: IF VV$ = "" THEN GOTO VF3
  727.     IF VV$ = CHR$(&H13) GOTO VF4
  728.     GOSUB VFLOOP2: IF VV$ = "Y" GOTO VF1 ELSE GOTO VF3
  729. VF4:    VV$ = INKEY$
  730.     IF VV$ = "" GOTO VF4
  731. VF3:    C$ = INPUT$(1, #2)
  732.     IF C$ = CHR$(&HA) THEN GOSUB VFLOOP1
  733.     D$ = D$ + C$
  734.     IF LEN(C$) > 127 THEN GOSUB VFLOOP1
  735.     GOTO VF5
  736. VF2:    IF ERR = 53 THEN
  737.      PRINT
  738.      LOCATE 24, 30
  739.      GOSUB LITEON
  740.      PRINT "File Not On Disk";
  741.      GOSUB LITEOFF
  742.      PRINT
  743.      RESUME VIEWFILE
  744.     END IF
  745.        
  746.     PRINT : LOCATE 24, 30: PRINT ERR, ERL
  747.     RESUME VIEWFILE
  748. VF1:    CLOSE #2: ON ERROR GOTO 0: IF VV$ = "Y" GOTO VFOUT
  749.     IF V$ = "" GOTO VFOUT
  750.     GOSUB 43200: PRINT "HIT any KEY to continue"
  751. VFLP:   V$ = INKEY$
  752.     IF V$ = "" GOTO VFLP
  753. VFOUT:  VV$ = "": GOSUB 43210: GOTO EXITVF
  754. EXITVF: RETURN
  755. VFLOOP1: PRINT D$; : C$ = "": D$ = "": RETURN
  756. VFLOOP2: INPUT "interrupted - END ? (y/n) "; VV$
  757.      IF VV$ = "y" THEN VV$ = "Y"
  758.      RETURN
  759.  
  760.  
  761. REM ********** DISPFILES
  762. DISPFILES:
  763.     GOSUB 43205: PRINT "Enter Drive: "; : INPUT VVV$
  764.     ON ERROR GOTO DISP1
  765.     VVV$ = LEFT$(VVV$, 1)
  766.     IF VVV$ = "" GOTO DISP2 ELSE VVV$ = VVV$ + ":"
  767. DISP2:  FILES VVV$: GOSUB 43200: PRINT "HIT ANY KEY TO CONTINUE"
  768. DISP3:  V$ = INKEY$
  769.  
  770.         IF V$ = "" THEN
  771.          GOTO DISP3
  772.          ELSE
  773.          A$ = ""
  774.          GOSUB 43210
  775.          ON ERROR GOTO 0
  776.          PRINT : PRINT
  777. EXITDISP:        RETURN
  778.         END IF
  779.  
  780. DISP1:  IF ERR = 53 THEN
  781.      GOSUB LITEON
  782.      PRINT "No files on disk";
  783.      GOSUB LITEOFF
  784.     END IF
  785.  
  786.     IF ERR = 71 THEN
  787.      GOSUB LITEON
  788.      PRINT "Drive Not Ready";
  789.      GOSUB LITEOFF
  790.     END IF
  791.  
  792.     V$ = "x": RESUME DISP3
  793.  
  794.  
  795. REM **********UPLOAD
  796. UPLOAD:
  797.     CLOSE #1: CLOSE #3: C$ = "": D$ = ""
  798.         IF BFLAG = 1 THEN
  799.          PRINT : LOCATE 24, 30: PRINT "WAIT to reset TNC"
  800.          GOSUB 43205
  801.          OPEN COMX$ FOR RANDOM AS #1
  802.          GOSUB FCMODE
  803.          BFLAG = 0
  804.          CLOSE
  805.         END IF
  806.  
  807.     PRINT : GOSUB 43200
  808.     PRINT "Enter B for binary upload OR hit any other key to continue"
  809.     V$ = INPUT$(1)
  810.     IF V$ = "b" THEN V$ = "B"
  811.     IF V$ <> "B" GOTO UPLD0
  812.     LOCATE 24, 30
  813.     GOSUB LITEON
  814.     PRINT "Ready for BINARY UPLOAD";
  815.     GOSUB LITEOFF
  816.     BFLAG = 1
  817. UPLD0:  GOSUB 43200
  818.     INPUT "ENTER name of file to UPLOAD: "; UN$
  819.     IF UN$ = "" THEN BFLAG = 0: GOTO UPLD5
  820.     IF BFLAG = 1 THEN GOSUB 43200: PRINT "Setting TNC to Transparent mode"
  821.     UPFLAG = 1
  822.     ON COM(1) GOSUB COMMLOOP
  823.        
  824.     OPEN COMX$ FOR RANDOM AS #1
  825.     COM(1) ON
  826.     GOSUB CMODE
  827.     PRINT #1, XOFF$
  828.         IF BFLAG = 1 THEN
  829.          GOSUB CMODE
  830.          PRINT #1, TMODE$        'force transparent mode
  831.         END IF
  832.  
  833.     GOSUB 43200: PRINT "Upload in progress"
  834.     ON ERROR GOTO UPLD8
  835.     OPEN "I", #3, UN$
  836.     FL = LOF(3): FM = 1
  837.     ON ERROR GOTO UPLD7   'without this,EOF mark, (1Ah) will stop transfer
  838.     IF BFLAG <> 1 THEN GOSUB CMODE: GOSUB CVMODE 'force converse mode
  839. UPLD1:  IF UPFLAG = 0 GOTO UPLD4
  840.     IF FM >= FL THEN GOSUB UPLD2: GOTO UPLD4   'CHECK END OF FILE
  841.     VV$ = INKEY$
  842.     IF VV$ <> "" THEN GOSUB UPLD6
  843.     IF VV$ = "Y" GOTO UPLD4
  844.     C$ = INPUT$(1, #3): D$ = D$ + C$: FM = FM + 1
  845.     IF C$ = CHR$(&HA) THEN GOSUB UPLD2
  846.     IF LEN(D$) > 127 THEN GOSUB UPLD2
  847.     GOTO UPLD1
  848. UPLD2:  IF BFLAG = 1 THEN PRINT "u"; : GOTO UPLD3
  849.  
  850.         IF RIGHT$(D$, 1) = CHR$(&HA) THEN
  851.          VVV = LEN(D$) - 1
  852.          PRINT LEFT$(D$, VVV);
  853.         ELSE
  854.          PRINT D$;
  855.         END IF
  856. UPLD3:
  857.          PRINT #1, D$;
  858.  
  859.     D$ = ""
  860.     RETURN
  861.  
  862. UPLD4:  IF BFLAG = 1 THEN
  863.      GOSUB 43200
  864.      FM$ = STR$(FM)
  865.     
  866.      PRINT UN$ + " SENT, " + FM$ + " bytes   ";
  867.      GOSUB LITEON
  868.      PRINT "Wait to reset TNC";
  869.      GOSUB LITEOFF
  870.  
  871.      PRINT #1, ENDBINARY$
  872.      GOSUB FCMODE
  873.     END IF
  874.  
  875.     BFLAG = 0
  876.     GOSUB CMODE
  877.     PRINT #1, XON$
  878.     CLOSE #1: CLOSE #3: COM(1) OFF
  879. UPLD5:  ON ERROR GOTO 0
  880.     UPFLAG = 0
  881.     GOSUB 43211
  882.     GOSUB 43210: PRINT
  883. EXITUPLD:
  884.     VV$ = ""
  885.     RETURN
  886.  
  887. UPLD6: INPUT "UPLOAD interrupted - END Upload ? (y/n) "; VV$
  888.     IF VV$ = "y" THEN VV$ = "Y"
  889.     RETURN
  890.  
  891. UPLD7: RESUME NEXT
  892. UPLD8: IF ERR = 53 THEN
  893.     PRINT
  894.     LOCATE 24, 30
  895.     GOSUB LITEON
  896.     PRINT "FILE NOT ON DISK";
  897.     GOSUB LITEOFF
  898.     RESUME UPLOAD
  899.        END IF
  900.        
  901.     IF ERR = 62 THEN
  902.      PRINT
  903.      LOCATE 24, 30
  904.      GOSUB LITEON
  905.      PRINT "NO DATA IN FILE";
  906.      GOSUB LITEOFF
  907.      RESUME UPLOAD
  908.     END IF
  909.  
  910.     PRINT : LOCATE 24, 30: PRINT ERL, ERR: RESUME UPLOAD
  911.  
  912.  
  913. REM ********** COMMLOOP
  914. COMMLOOP:
  915.     V = LOC(1)
  916. COML1:  IF V = 0 THEN RETURN
  917.     VV$ = INKEY$: IF VV$ <> "" THEN GOSUB BIGLOOP: V = 0: GOTO COML1
  918.  
  919.  A$ = INPUT$(1, #1)
  920.     B$ = B$ + A$
  921.     IF A$ = CHR$(&HA) THEN
  922.      GOSUB BIGLOOP
  923.     END IF
  924.     IF LEN(B$) > 127 THEN GOSUB BIGLOOP
  925.     GOTO COMMLOOP
  926.  
  927.  
  928. REM **********COMMLOOP2
  929. COMMLOOP2:
  930. IF NOT EOF(1) THEN
  931.  CLA$ = INPUT$(1, #1)
  932.     CLB$ = CLB$ + CLA$
  933.  
  934.     IF CLA$ = CHR$(&HA) THEN
  935.      GOSUB CL2CONPNT
  936.     ELSEIF LEN(B$) > 127 THEN
  937.      GOSUB CL2CONPNT
  938.     END IF
  939. END IF
  940. EXITCL2: RETURN
  941.  
  942. CL2CONPNT:    
  943.      LOCATE 24, 1
  944.  
  945.         IF RIGHT$(CLB$, 1) = CHR$(&HA) THEN
  946.          VVV = LEN(CLB$) - 1
  947.          PRINT LEFT$(CLB$, VVV);
  948.         ELSE
  949.          PRINT CLB$;
  950.         END IF
  951.      
  952.      CLA$ = ""
  953.      CLB$ = ""
  954.      LOCATE 25, V + 1
  955.      RETURN
  956.  
  957. REM ********** MENU2
  958. MENU2:
  959.   CLS : LOCATE 7, 10
  960.   PRINT "Help Menu for control commands while in Communications mode"
  961.   LOCATE 10, 13: PRINT "HIT THE ALT KEY ALONG WITH THE FOLLOWING KEY:"
  962.   LOCATE 12, 13: PRINT "Q   Return to MAIN MENU       O   Open download file"
  963.   LOCATE 14, 13: PRINT "L   Log file on               K   Log or download file off":
  964.   LOCATE 16, 13: PRINT "T   Type to disk              V   View file": PRINT
  965.   LOCATE 18, 13: PRINT "U   Upload file               F   Display files on disk"
  966.   LOCATE 20, 13: PRINT "S   Set function keys         D   DOS SHELL "
  967.   LOCATE 24, 13: PRINT "Communications mode,  Hit  ALT H   for help menu"
  968.   RETURN
  969.  
  970.  
  971. REM ********** SAVELOG
  972. SAVELOG:
  973.     VV = LEN(BBS$(Z))
  974.     FOR V = 1 TO VV
  975.     IF MID$(BBS$(Z), V, 1) < "0" THEN MID$(BBS$(Z), V, 1) = "_"
  976.     NEXT
  977.     FOR V = 1 TO VV
  978.     IF MID$(BBS$(Z), V, 1) > "z" THEN MID$(BBS$(Z), V, 1) = "_"
  979.     NEXT
  980.       
  981.  
  982.     OPEN "O", #2, BBS$(Z)
  983.     PRINT #2, B$, DATE$, TIME$
  984.     CLOSE #2
  985.     BBS$(Z) = BBS$(Z) + " has mail"
  986.     PRINT
  987.     ON ERROR GOTO 0: RETURN
  988.  
  989.  
  990. REM ********** SET FUNCTION KEYS
  991. SETKEYS:
  992.   CLS
  993.   LOCATE 7, 20: PRINT " ---------- FUNCTION KEY MENU ---------- "
  994.   LOCATE 10, 26: PRINT "1. View Function keys"
  995.   LOCATE 12, 26: PRINT "2. Change keys"
  996.   LOCATE 14, 26: PRINT "3. RETURN to return to com mode"
  997.   PRINT
  998. SETKEYSLP:
  999.     PRINT "                CHOICE:";
  1000.     INPUT A$
  1001.     SELECT CASE A$
  1002.      CASE IS = ""
  1003.       GOTO SETKEYSLP
  1004.      CASE IS = "1"
  1005.       GOSUB SETK1
  1006.      CASE IS = "2"
  1007.       GOSUB SETK2
  1008.      CASE IS = "3"
  1009.       GOTO EXITSETK
  1010.      CASE ELSE
  1011.     GOTO SETKEYSLP
  1012.     END SELECT
  1013.  
  1014.     GOTO SETKEYS
  1015.  
  1016.  
  1017. EXITSETK: A$ = ""
  1018.       GOSUB 43212
  1019.       GOSUB 43250
  1020.       RETURN
  1021.  
  1022. SETK1:   CLS
  1023.      GOSUB 43212
  1024.      KEY LIST
  1025.      GOSUB 43200: PRINT "HIT any KEY to continue"
  1026. SKLP:    V$ = INKEY$
  1027.      IF V$ = "" GOTO SKLP
  1028.     RETURN
  1029.  
  1030. SETK2: CLS
  1031. SETK22: LOCATE 15, 1
  1032.     PRINT "To exit NO change hit return"
  1033.     PRINT
  1034.     INPUT "ENTER: Function key # "; A
  1035.     IF A = 0 THEN A = 255: GOTO EXITSETK2
  1036.     INPUT "ENTER: Function key string: "; A$
  1037.     IF A$ = "" THEN GOTO EXITSETK2
  1038.     KEY A, A$
  1039. EXITSETK2: RETURN
  1040.  
  1041. REM ********** GET DATA FROM MAIL6.DAT ON DISK
  1042. GETMAILDAT:
  1043.     LOCATE 15, 25
  1044.     PRINT "Reading data file MAIL6.DAT"
  1045.     WHILE NOT EOF(3)
  1046.       CALL GETLINE(YOURCALL$)
  1047.       CALL GETLINE(MAILCALL$)
  1048.       CALL GETLINE(COMX$)
  1049.       CALL GETLINE(COMT$)
  1050.       CALL GETLINE(TRESET$)
  1051.       CALL GETLINE(V$)
  1052.          V = VAL(V$)
  1053.          CMDMODE$ = CHR$(V)
  1054.       CALL GETLINE(DISMODE$)
  1055.       CALL GETLINE(CONVMODE$)
  1056.       CALL GETLINE(TMODE$)
  1057.       CALL GETLINE(ENDBINARY$)
  1058.       CALL GETLINE(V$)
  1059.          V = VAL(V$)
  1060.          XON$ = CHR$(V)
  1061.       CALL GETLINE(V$)
  1062.          V = VAL(V$)
  1063.          XOFF$ = CHR$(V)
  1064.       CALL GETLINE(V$)
  1065.          TNCN = VAL(V$)
  1066.          DIM TNC$(TNCN)
  1067.       FOR V = 1 TO TNCN
  1068.         CALL GETLINE(TNC$(V))
  1069.       NEXT
  1070.  
  1071.       CALL GETLINE(V$)
  1072.          BBSN = VAL(V$)
  1073.          DIM BBS$(BBSN)
  1074.       FOR V = 1 TO BBSN
  1075.         CALL GETLINE(BBS$(V))
  1076.       NEXT
  1077.  
  1078.       CALL GETLINE(V$)
  1079.          CALLPOS = VAL(V$)
  1080.  
  1081.       CALL GETLINE(V$)
  1082.          SNMSGN = VAL(V$)
  1083.          DIM SNMSG$(SNMSGN)
  1084.       FOR V = 1 TO SNMSGN
  1085.         CALL GETLINE(SNMSG$(V))
  1086.       NEXT
  1087.  
  1088.       CALL GETLINE(SOFFMSG$)
  1089.  
  1090.       CALL GETLINE(V$)
  1091.          FF = VAL(V$)
  1092.       CALL GETLINE(V$)
  1093.          T0 = VAL(V$)
  1094.       CALL GETLINE(V$)
  1095.          T1 = VAL(V$) * FF
  1096.       CALL GETLINE(V$)
  1097.          T2 = VAL(V$) * FF
  1098.       CALL GETLINE(V$)
  1099.          T3 = VAL(V$) * FF
  1100.       CALL GETLINE(V$)
  1101.          T4 = VAL(V$) * FF
  1102.  
  1103.       CALL GETLINE(FLAG$)
  1104.  
  1105.       CALL GETLINE(V$)
  1106.          KEY 1, V$
  1107.       CALL GETLINE(V$)
  1108.          KEY 2, V$
  1109.       CALL GETLINE(V$)
  1110.          KEY 3, V$
  1111.       CALL GETLINE(V$)
  1112.          KEY 4, V$
  1113.       CALL GETLINE(V$)
  1114.          KEY 5, V$
  1115.       CALL GETLINE(V$)
  1116.          KEY 6, V$
  1117.       CALL GETLINE(V$)
  1118.          KEY 7, V$
  1119.       CALL GETLINE(V$)
  1120.          KEY 8, V$
  1121.       CALL GETLINE(V$)
  1122.          KEY 9, V$
  1123.       CALL GETLINE(V$)
  1124.          KEY 10, V$
  1125.       V = 0
  1126. LONGLOOP: CALL GETLINE(V$)      'LOOP UNTIL ALL LINES IN FILE ARE READ   
  1127.       V = V + 1
  1128.       IF V < 1000 GOTO LONGLOOP
  1129.     WEND
  1130.  RETURN
  1131.  
  1132. SUB GETLINE (A$) STATIC
  1133. XGETLINE1:      LINE INPUT #3, A$
  1134.         IF LEFT$(A$, 3) = "REM" THEN GOTO XGETLINE1
  1135. END SUB
  1136.  
  1137.